package com.jason.kotlin.meta.architecture1.api

import java.lang.reflect.Constructor

object RepositoryFactory {

    fun <T> getRepository(repository: Class<T>) : T {
        /**
         * 这里利用反射，将私有的构造方法改为共有的，用于创建实例，否则无法创建实例
         */
        val constructor: Constructor<*> = repository.getDeclaredConstructor()
        constructor.isAccessible = true
        val result = constructor.newInstance()
        return result as T
    }
}